home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1994 / MacHack 1994.toast / MacHack™ 1987-1994 / MacHack™ '90 / MacHack 90 Contest Entries / Surovell Stuffƒ / GeeWhizƒ / Compatibility.h next >
Encoding:
C/C++ Source or Header  |  1990-04-16  |  2.4 KB  |  122 lines  |  [TEXT/KAHL]

  1. /*
  2.     Copyright © 1988,1989,1990 by Succinct Systems
  3.  
  4.     433 Huronview
  5.     Ann Arbor, MI 48103
  6.     (313) 663-4903
  7.  
  8.     File:         Compatibility.h
  9.     Model:         THINK C 4.0, MPW C 3.0
  10.  
  11.     ABSTRACT:
  12.         Standard inter-development compatibility definitions.
  13.  
  14.     NOTES:
  15.         ---
  16.  
  17.     KNOWN BUGS:
  18.         ---
  19.  
  20.     HISTORY:
  21.         DAS    10-Jul-88    created this file    (David A. Surovell)
  22.         DAS    14-Jul-89    amended for new Think 4.0 support for new ANSI standard
  23.         DAS    04-Feb-90    added Think --> MPW conversion support
  24.                         added C++ object syntax stub supports
  25.                         upgraded string support
  26.         DAS    05-Apr-90    moved C++ support into <CPlusCovers.h> and #included
  27.         DAS    16-Apr-90    added "const" dummy definition
  28. */
  29.  
  30. #define    _H_Compatibility
  31.  
  32.  
  33. #ifdef THINK_C                                /* if Think C currently in use    */
  34.  
  35. /* some compilers require “return()” in void functions */
  36. #ifndef RETURN
  37. #define RETURN            return
  38. #endif RETURN
  39.  
  40. /* some compilers can’t pass Point structure variables */
  41. /* without casting them to type “long” */
  42. #ifndef pass
  43. #define pass(A)            (A)
  44. #endif pass
  45.  
  46. /* some compilers pass Point variables to Toolbox routines */
  47. /* by reference rather than by value */
  48. #ifndef ptpass
  49. #define ptpass(A)        (A)
  50. #endif ptpass
  51.  
  52. /* some compilers define strings as struct-based data types */
  53. /* sign extension problems are common, too */
  54. #ifndef USTRLEN
  55. #define USTRLEN(A)        ((unsigned)((char*)(A)[0]))
  56. #endif USTRLEN
  57.  
  58. /* A lack of ANSI can be painful, especially since MPW uses this construct heavily */
  59. #ifndef const
  60. #define const        /**/
  61. #endif const
  62.  
  63. /* these will be language features someday soon, we hope */
  64. #include <CPlusCovers.h>
  65.  
  66. #endif THINK_C
  67.  
  68.  
  69. #ifdef _MPWC_                                /* if MPW C is currently in use        */
  70.  
  71. #ifndef RETURN
  72. #define RETURN            return
  73. #endif RETURN
  74.  
  75. #ifndef pass
  76. #define pass(A)            (A)
  77. #endif pass
  78.  
  79. #ifndef ptpass
  80. #define ptpass(A)        (&(A))
  81. #endif ptpass
  82.  
  83. #ifndef USTRLEN
  84. #define USTRLEN(A)        ((unsigned)((char*)(A)[0]))
  85. #endif USTRLEN
  86.  
  87. /*
  88. **    Note: it used to be this, in v2.0 compiler!
  89. **
  90. #define USTRLEN(A)        ((unsigned)((A).length))
  91. */
  92. #endif _MPWC_
  93.  
  94.  
  95. #ifdef _AZTECC_                                /* if Aztec C is currently in use    */
  96.  
  97. #ifndef RETURN
  98. #define RETURN            return()
  99. #endif RETURN
  100.  
  101. #ifndef ptpass
  102. #define    ptpass(A)        (*((long*)&(A)))
  103. #endif ptpass
  104.  
  105. #ifndef USTRLEN
  106. #define    USTRLEN(A)        ((unsigned)(*((Ptr)(&(A)))))
  107. #endif USTRLEN
  108.  
  109. #endif _AZTECC_
  110.  
  111.  
  112. /* generic and language-independent */
  113. #ifndef NULL
  114. #define NULL            0L
  115. #endif NULL
  116.  
  117. #ifndef TRUE
  118. #define TRUE            ((Boolean)1)
  119. #define FALSE            ((Boolean)0)
  120. #endif TRUE
  121.  
  122.